﻿package com.manyiaby.view.viewutils;

import android.content.Context;
import android.content.Intent;
import android.text.TextUtils;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.Display;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.widget.ImageView;

import com.manyiaby.R;
import com.manyiaby.view.activityview.ImageBrowseActivity;
import com.squareup.picasso.Picasso;

import java.util.ArrayList;

import static com.taobao.accs.ACCSManager.mContext;

/**
 * Created by My Love on 2017/6/18.
 * 尺寸转换
 */

public class DpPxConvert {
    /**
     * 根据手机的分辨率从 dip 的单位 转成为 px(像素)
     */
    public static int dip2px(Context context, float dpValue) {
        final float scale = context.getResources().getDisplayMetrics().density;
        return (int) (dpValue * scale + 0.5f);
    }

    /**
     * 根据手机的分辨率从 px(像素) 的单位 转成为 dp
     */
    public static int px2dip(Context context, float pxValue) {
        final float scale = context.getResources().getDisplayMetrics().density;
        return (int) (pxValue / scale + 0.5f);
    }

    /**
     * 将px值转换为sp值，保证文字大小不变
     */
    public static int px2sp(Context context, float pxValue) {
        final float fontScale = context.getResources().getDisplayMetrics().scaledDensity;
        return (int) (pxValue / fontScale + 0.5f);
    }

    /**
     * 将sp值转换为px值，保证文字大小不变
     */
    public static int sp2px(Context context, float spValue) {
        final float fontScale = context.getResources().getDisplayMetrics().scaledDensity;
        return (int) (spValue * fontScale + 0.5f);
    }

    public static int count = 1;//瀑布流第一次调用

    /**
     * 屏幕宽度2等分，高度自适应
     * 瀑布流
     *
     * @param context
     * @param iv
     * @param imgWidth
     * @param imgHight
     * @param imgUrl
     */
    public static void getScreenWith(Context context, ImageView iv, String imgWidth, String imgHight, String imgUrl) {
        DisplayMetrics metric = new DisplayMetrics();
        WindowManager manager = (WindowManager) context
                .getSystemService(Context.WINDOW_SERVICE);
        manager.getDefaultDisplay().getMetrics(metric);
        int screenWidth = metric.widthPixels; // 屏幕宽度（像素）
        //一列的宽度 = 屏幕宽度 - 图片之间的间隙 / 2 (两列)
        //int myWidth = (int) (screenWidth - SizeConvert.dip2px(context, 10)) / 2;//-------------图片宽度
        int myWidth = (screenWidth + SizeConvert.dip2px(context, 10)) / 2;//--为了解决屏幕左右存在各10间距问题，需先给屏幕加上左右间距并在布局中加-10
        //int myWidth = screenWidth / 2;
        //获取bitmap的宽度
        float bitWidth;
        //获取bitmap的宽度
        float bithight;
        if (TextUtils.isEmpty(imgWidth) || TextUtils.isEmpty(imgHight)) {
            bitWidth = myWidth;
            bithight = myWidth + 220;
            Log.i("aaaa", "----------NoImageWidthorHight------------");
        } else {
            bitWidth = Integer.parseInt(imgWidth);
            bithight = Integer.parseInt(imgHight);
        }

        //计算出图片的宽高比，然后按照图片的比列去缩放图片
        float bitScalew = bitWidth / bithight;
//        Log.i("aaaa", "==============宽高比：=====================" + bitScalew);
        //高度 = (一列的宽度 / 从数据中得到的宽高比)+0.5f四舍五入取整
        int height = (int) (myWidth / bitScalew + 0.5f);//-------------------------------图片高度
        //高度自适应，最大高度是宽度的2倍
        double mh = myWidth * 2;
        int maxHeight = (int) mh;//-----------------------------------------------限定图片最大高度
        if (count == 1) {
//            Log.i("aaaa", "===========第一次调用瀑布流=1图高限定为1.5倍=========");
            mh = myWidth * 1.5;
            maxHeight = (int) mh;
            count++;
        }

        ViewGroup.LayoutParams params = iv.getLayoutParams();
        params.width = myWidth;
        params.height = ViewGroup.LayoutParams.WRAP_CONTENT;//height
//        Log.i("aaaa", "===========screenWidth=====:" + screenWidth);
//        Log.i("aaaa", "===========myWidth:" + myWidth + "===========height:" + height + "============maxHeight:" + maxHeight);
        iv.setMaxWidth(myWidth);
        iv.setMaxHeight(maxHeight);// 这里其实可以根据需求而定，我这里测试为最大宽度的2倍
//        //设置图片充满ImageView控件
//        iv.setScaleType(ImageView.ScaleType.CENTER_CROP);
//        //等比例缩放
//        iv.setAdjustViewBounds(true);
        iv.setLayoutParams(params);
        //尺寸压缩,减少内存
        int w = myWidth / 2;
        int h = height / 2;

        Picasso.with(context).load(imgUrl).resize(w, h).centerCrop().into(iv);
        // Display display = manager.getDefaultDisplay();
        // return display.getWidth();
    }

    /**
     * ImageView占屏幕一半，宽高比例3：4
     * 瀑布流
     *
     * @param context
     * @param mImageView
     * @param imgUrl
     */
    public static void setImageViewSize(Context context, ImageView mImageView, String imgUrl) {
        DisplayMetrics metric = new DisplayMetrics();
        WindowManager manager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
        manager.getDefaultDisplay().getMetrics(metric);
        int screenWidth = metric.widthPixels; // 屏幕宽度（像素）
        //一列的宽度 = 屏幕宽度 - 图片之间的间隙 / 2 (两列)
        int myWidth = (screenWidth - SizeConvert.dip2px(context, 30)) / 2;//图片宽度

        ViewGroup.LayoutParams params = mImageView.getLayoutParams();
        params.width = myWidth;
        params.height = myWidth * 4 / 3;//height
//        //设置图片充满ImageView控件
        mImageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
//        //等比例缩放
//        mImageView.setAdjustViewBounds(true);
//        mImageView.setLayoutParams(params);

        ImageLoadUtil.loadImage(context, imgUrl, mImageView);
    }


    /**
     * 宽度充满屏幕，高度自适应
     * 艺术品列表
     *
     * @param context
     * @param iv
     */
    public static void getScreenWithFull(Context context, ImageView iv) {
        DisplayMetrics metric = new DisplayMetrics();
        WindowManager manager = (WindowManager) context
                .getSystemService(Context.WINDOW_SERVICE);
        manager.getDefaultDisplay().getMetrics(metric);
        int screenWidth = metric.widthPixels; // 屏幕宽度（像素）

        ViewGroup.LayoutParams lp = iv.getLayoutParams();
        lp.width = screenWidth;
        lp.height = ViewGroup.LayoutParams.WRAP_CONTENT;
        iv.setMaxWidth(screenWidth);
        iv.setMaxHeight((int) (screenWidth * 5));// 这里其实可以根据需求而定，我这里测试为最大宽度的1.5倍
        iv.setLayoutParams(lp);
    }


    /**
     * 一张图片的时候，最大宽度为屏幕剩余尺寸的3/4，高度自适应（最大为当前最大宽度的2倍）
     * 圈子
     *
     * @param context
     * @param iv
     */
    public static void getScreenWithOne(Context context, int a, ImageView iv) {
        int maxWidth = (int) (a * 3 / 4);//最大宽度为剩余宽度的3/4
        ViewGroup.LayoutParams lp = iv.getLayoutParams();
        lp.width = ViewGroup.LayoutParams.WRAP_CONTENT;
        lp.height = ViewGroup.LayoutParams.WRAP_CONTENT;
        iv.setMaxWidth(maxWidth);
        iv.setMaxHeight((int) (maxWidth * 2));// 这里其实可以根据需求而定，我这里测试为最大宽度的2倍
        iv.setLayoutParams(lp);
    }

    /**
     * 获取屏幕宽度
     *
     * @param mContext
     * @return
     */
    public static int getScreenWidth(Context mContext) {
        int screenWidth = 0;
        DisplayMetrics dm = new DisplayMetrics();
        WindowManager manager = (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE);
        manager.getDefaultDisplay().getMetrics(dm);
        screenWidth = dm.widthPixels;
        return screenWidth;
    }

    /**
     * 获取屏幕高度
     *
     * @param mContext
     * @return
     */
    public static int getScreenHeight(Context mContext) {
        int screenHeight = 0;
        DisplayMetrics dm = new DisplayMetrics();
        WindowManager manager = (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE);
        manager.getDefaultDisplay().getMetrics(dm);
        screenHeight = dm.heightPixels;
        return screenHeight;
    }

}
